﻿using Common.Helpers;
using MasterEntities.Abstraction;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MasterEntities
{
    public class PravnoLice : Osoba, IDomainObject
    {
        public string PunoIme { get; set; }
        public DateTime? DatumOsnivanja { get; set; }
        public string PIB { get; set; }

        public PravnoLice() { }

        public PravnoLice(string PunoIme, DateTime? DatumOsnivanja, string PIB, long Id, string Naziv, DateTime? VremeKreiranja, bool? Rezident, string IdentifikacioniBroj, string Jezik, long IdentifikacioniDokumentId, byte[] Slika, IdentifikacioniDokument IdentifikacioniDokument)
            : base(Id, Naziv, VremeKreiranja, Rezident, IdentifikacioniBroj, Jezik, IdentifikacioniDokumentId, Slika, IdentifikacioniDokument)
        {
            this.PunoIme = PunoIme;
            this.DatumOsnivanja = DatumOsnivanja;
            this.PIB = PIB;
        }

        public new string BaseClassName()
        {
            return this.GetType().BaseType.Name;
        }

        public new string PrimaryKey()
        {
            return base.PrimaryKey();
        }

        public new string GetTableName()
        {
            return this.GetType().Name;
        }

        public new string InsertColumns()
        {
            string insertColumns = string.Empty;
            if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp1)
                insertColumns = "(Id, PunoIme, DatumOsnivanja, PIB)";
            else if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp2)
                insertColumns = "(Id, Naziv, VremeKreiranja, Rezident, IdentifikacioniBroj, Jezik, PunoIme, DatumOsnivanja, PIB, Slika, IdentifikacioniDokumentId)";

            return insertColumns;
        }

        public new string ColumnsToUpdate()
        {
            string updateColumns = string.Empty;
            if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp1)
                updateColumns = "PunoIme = '" + (PunoIme == null ? Naziv : PunoIme) + "', DatumOsnivanja = " + (DatumOsnivanja == null ? "NULL" : "'" + Convert.ToDateTime(DatumOsnivanja) + "'") + ",  PIB = " + (PIB == null ? "NULL" : "'" + PIB + "'");
            else if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp2)
                updateColumns = "Naziv = '" + Naziv + "' , Rezident = " + (Rezident == null ? "NULL" : (bool)Rezident == true ? "1" : "0") + " , IdentifikacioniBroj = '" + IdentifikacioniBroj + "' , Jezik = '" + Jezik + "', PunoIme = '" + (PunoIme == null ? Naziv : PunoIme) + "', DatumOsnivanja = " + (DatumOsnivanja == null ? "NULL" : "'" + Convert.ToDateTime(DatumOsnivanja) + "'") + ", PIB = " + (PIB == null ? "NULL" : "'" + PIB + "'") + ", Slika = @Slika";

            return updateColumns;
        }

        public new string InsertValues()
        {
            string insertCommand = string.Empty;
            if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp1)
                insertCommand = "(" + Id.ToString() + " , '" + (PunoIme == null ? Naziv : PunoIme) + "'," + (DatumOsnivanja == null ? "NULL" : "'" + Convert.ToDateTime(DatumOsnivanja) + "'") + "," + (PIB == null ? "NULL" : "'" + PIB + "'") + ")";
            else if (GlobalVariables.Instance.dbConnection == Common.Helpers.Enums.DatabaseConnection.MasterApp2)
                insertCommand = "(" + Id.ToString() + " , '" + Naziv + "', " + (VremeKreiranja == null ? "NULL" : "'" + Convert.ToDateTime(VremeKreiranja) + "'") + " , " + (Rezident == null ? "NULL" : (bool)Rezident == true ? "1" : "0") + " , '" + IdentifikacioniBroj + "' , '" + Jezik + "', '" + (PunoIme == null ? Naziv : PunoIme) + "'," + (DatumOsnivanja == null ? "NULL" : "'" + Convert.ToDateTime(DatumOsnivanja).Date.ToString("yyyy-MM-dd HH:mm:ss") + "'") + "," + (PIB == null ? "NULL" : "'" + PIB + "'") + ", @Slika," + IdentifikacioniDokumentId + ")";

            return insertCommand;
        }

        public new string SchemaName()
        {
            return "dbo";
        }

        public new string Alias()
        {
            return "pl";
        }

    }
}
